package vue.panneau1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import vue.util.RGBMixer;
import modele.Equation3D;

public class PopupActionEquation3D extends JPanel implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private Interface3DZone1 zone3D;
	private Equation3D equationCourante;
	
	private JDialog fen;
	private Box boxH1,boxH2,boxV;
	private JPanel pan;
	private JLabel jlX1,jlX2,jlX3,jlOperateur,jlPartieD,jlCouleur;
	private JTextField jtfX1,jtfX2,jtfX3,jtfPartieD;
	private JComboBox jcbOperateur;
	private JButton bCouleur,bOk,bAnnuler;	
	private String action;
	
	public PopupActionEquation3D(Interface3DZone1 zone3D,Equation3D equationCourante,String action)
	{
		this.zone3D = zone3D;
		this.equationCourante = equationCourante;
		this.action = action;

		if(action.equals("ajout"))
		{
			this.ajout();
		}
		if(action.equals("modif"))
		{
			this.modif();
		}		
	}
	
	private void modif()
	{		
		jlX1 = new JLabel(" X1 :");		
		jtfX1 = new JTextField(5);
		jtfX1.setText("" + equationCourante.getX1());
		
		jlX2 = new JLabel(" X2 :");		
		jtfX2 = new JTextField(5);
		jtfX2.setText("" + equationCourante.getX2());
		
		jlX3 = new JLabel(" X3 :");		
		jtfX3 = new JTextField(5);
		jtfX3.setText("" + equationCourante.getX3());
		
		jlOperateur = new JLabel(" Opérateur :");		
		jcbOperateur = new JComboBox();
		jcbOperateur.insertItemAt("<=",0);
		jcbOperateur.insertItemAt(">=",1);
		jcbOperateur.setSelectedItem(equationCourante.getOperateur());
		
		jlPartieD = new JLabel(" Partie droite : ");
		jtfPartieD = new JTextField(5);
		jtfPartieD.setText("" + equationCourante.getPartieDroite());
		
		jlCouleur = new JLabel(" Couleur :");		
		bCouleur = new JButton();
		bCouleur.setBackground(equationCourante.getCouleur());
		bCouleur.setActionCommand("choisir_couleur");
		bCouleur.addActionListener(this);
		
		this.afficher("Modification");
	}
	
	public void ajout()
	{
		jlX1 = new JLabel(" X1 :");		
		jtfX1 = new JTextField(5);
		jtfX1.setText("0");
		
		jlX2 = new JLabel(" X2 :");		
		jtfX2 = new JTextField(5);
		jtfX2.setText("0");
		
		jlX3 = new JLabel(" X3 :");		
		jtfX3 = new JTextField(5);
		jtfX3.setText("0");
		
		jlOperateur = new JLabel(" Opérateur :");		
		jcbOperateur = new JComboBox();
		jcbOperateur.insertItemAt("<=",0);
		jcbOperateur.insertItemAt(">=",1);
		jcbOperateur.setSelectedIndex(0);
		
		jlPartieD = new JLabel(" Partie droite : ");
		jtfPartieD = new JTextField(5);
		jtfPartieD.setText("0");
		
		jlCouleur = new JLabel(" Couleur :");		
		bCouleur = new JButton();
		bCouleur.setBackground(Color.BLACK);
		bCouleur.setActionCommand("choisir_couleur");
		bCouleur.addActionListener(this);
		
		this.afficher("Ajout");
	}
	
	public void afficher(String mode)
	{
		pan = new JPanel();
		pan.setLayout(new GridLayout(0,2));
		pan.add(jlX1);
		pan.add(jtfX1);
		pan.add(jlX2);				
		pan.add(jtfX2);
		pan.add(jlX3);				
		pan.add(jtfX3);
		pan.add(jlOperateur);
		pan.add(jcbOperateur);
		pan.add(jlPartieD);
		pan.add(jtfPartieD);
		pan.add(jlCouleur);
		pan.add(bCouleur);
		
		bOk = new JButton("OK");
		bAnnuler = new JButton("Annuler");
		
		bOk.setMaximumSize(bAnnuler.getMinimumSize());
		
		bOk.setActionCommand("ok");
		bAnnuler.setActionCommand("annuler");
		
		bOk.addActionListener(this);		
		bAnnuler.addActionListener(this);
		
		boxH1 = Box.createHorizontalBox();
		boxH1.add(Box.createHorizontalStrut(15));
		boxH1.add(pan);
		boxH1.add(Box.createHorizontalStrut(15));
		
		boxH2 = Box.createHorizontalBox();
		boxH2.add(Box.createHorizontalStrut(15));
		boxH2.add(bOk);
		boxH2.add(Box.createHorizontalStrut(15));
		boxH2.add(bAnnuler);
		boxH2.add(Box.createHorizontalStrut(15));
		
		boxV = Box.createVerticalBox();
		boxV.add(Box.createHorizontalStrut(50));
		boxV.add(boxH1);
		boxV.add(Box.createHorizontalStrut(30));
		boxV.add(boxH2);
		boxV.add(Box.createHorizontalStrut(50));
		
		this.setPreferredSize(new Dimension(200,200));
		this.setLayout(new BorderLayout());
		this.add(boxV,BorderLayout.CENTER);
		
		fen = new JDialog();
		fen.getRootPane().setDefaultButton(bOk);
		fen.add(this);
		fen.setTitle(mode);		
		fen.setLocationRelativeTo(zone3D);
		fen.setResizable(false);
		fen.setAlwaysOnTop(true);
		fen.setModal(true);
		fen.pack();
		fen.setVisible(true);
	}

	public void actionPerformed(ActionEvent e) 
	{	
		String cmd = e.getActionCommand();
		
		if(cmd.equals("choisir_couleur"))
		{
			new RGBMixer(bCouleur);
		}
		if(cmd.equals("annuler"))
		{
			fen.dispose();
		}
		if(cmd.equals("ok"))
		{	
			String sx1,sx2,sx3,pdt,op;
			Color couleur;
			
			sx1 = jtfX1.getText();
			sx2 = jtfX2.getText();
			sx3 = jtfX3.getText();
			pdt = jtfPartieD.getText();
			op = (String)jcbOperateur.getSelectedItem();
			couleur = bCouleur.getBackground();
			
			if(!(sx1.equals("") || sx2.equals("") || sx3.equals("") || pdt.equals("")))
			{	
				float x1 = Float.parseFloat(sx1);
				float x2 = Float.parseFloat(sx2);
				float x3 = Float.parseFloat(sx3);
				float partieD = Float.parseFloat(pdt); 
				
				if(!(x1 == 0 && x2 == 0 && x3 == 0)) 
				{
					Equation3D neweq = new Equation3D(x1,x2,x3,op,partieD,couleur,Equation3D.DEFAUT);
					
					if(action.equals("ajout"))
					{
						zone3D.ajouterEquation(neweq);
					}	
					if(action.equals("modif"))
					{
						zone3D.modifierEquation(neweq,equationCourante);
					}
				}
			}	
			fen.dispose();
		}		
	}
}